package top.humbleyuan.math;

/**
 * @Author HumbleYuan
 * @Date 2020/5/22 19:07
 * @Des 回文数
 */
public class LeetCode_9 {

    /**
     * 类似于leetcode7.依然利用res = res * 10 + num
     * 计算数的反转
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(isPalindrome(121));
    }

    public static boolean isPalindrome(int x) {
        if(x == 0) {
            return true;
        }

        // 可以加一些特殊情况处理
        // 负数和末尾是0的数一定不是回文数
        if(x < 0 || x % 10 == 0) {
            return false;
        }

        int sum = 0;
        int num = x;
        // 从尾开始pop出数字加起来是否等于原数
        while(num > 0) {
            int curNum = num % 10;

            // 有个溢出问题，如果溢出直接返回
            if(sum * 10 / 10 != sum) {
                return false;
            }
            sum = sum * 10 + curNum;
            num /= 10;
        }

        if(sum == x) {
            return true;
        } else {
            return false;
        }
    }
}
